#include <stdio.h>
#include "ofc/DFTPClient.h"

int main(int argc, char *argv[])
{
  DFTPClient         *ftp   = [DFTPClient new];
  DInetSocketAddress *addr  = [DInetSocketAddress new];
  DList              *files = [DList new];
  DListIterator      *iter  = [DListIterator new];
  DText              *str;

  [addr host :"ftp.gnu.org" :DFPC_PORT]; // Set address to the host and default FTP port

  if ([ftp open :addr])                // Open the ftp client (passive)
  {
    if ([ftp waitForGreetings])        // Wait for server greetings
    {
      if ([ftp login :NULL :NULL :NULL]) // Login
      {
        if (![ftp getWorkingDirectory])
          printf("Could not do a get working directory:%d\n", [ftp responseCode]);

        if ([ftp list :NULL :files]) // Ask for a directory listing
        {
          printf("Directory with %ld files.\n", [files length]);

          [iter list :files];

          str = [iter first];
          while (str != nil)
          {
            printf("File: %s\n", [str cstring]); // Print the files in the listing

            str = [iter next];
          }
        }
        else
          printf("Could not do a directory listing:%d\n", [ftp responseCode]);
      
      }
      else
        printf("Could not login:%d\n", [ftp responseCode]);
    }
    else
      printf("Service not available:%d\n", [ftp responseCode]);

    [ftp quit];                       // Quit the connection
  }
  else
    printf("Could not connect to \"ftp.gnu.org\".\n");
  
  return 0;
}

